package Transaksi;

import Login.*;
import java.sql.*;
import java.util.*;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */


/**
 *
 * @author Elisa
 */
public class Pemasok {
    private String kodePemasok, namaPemasok, alamat, noTelepon, person, no_transaksi_beli;
    private Connection konek = null;
    private static Pemasok pmsk;

    public Pemasok() {
    }

    public Pemasok(Connection conn) {
        this.konek = conn;
    }

    public static Pemasok getKoneksi () {
        Koneksi k = new Koneksi();
        if (pmsk == null) {
            pmsk = new Pemasok (k.getConnection());
        }
        return pmsk;
    }

    public String getKodePemasok() {
        return kodePemasok;
    }

    public void setKodePemasok(String kodePemasok) {
        this.kodePemasok = kodePemasok;
    }

    public String getNamaPemasok() {
        return namaPemasok;
    }

    public void setNamaPemasok(String namaPemasok) {
        this.namaPemasok = namaPemasok;
    }

    public String getAlamat() {
        return alamat;
    }

    public void setAlamat(String alamat) {
        this.alamat = alamat;
    }

    public String getNoTelepon() {
        return noTelepon;
    }

    public void setNoTelepon(String noTelepon) {
        this.noTelepon = noTelepon;
    }

    public String getPerson() {
        return person;
    }

    public void setPerson(String person) {
        this.person = person;
    }

    public void tambahPemasokCallable(Pemasok pemasok) throws SQLException {
        CallableStatement call = null;

        String kode_pemasok = pemasok.getKodePemasok();
        String nama_pemasok = pemasok.getNamaPemasok();
        String alamat_pemasok = pemasok.getAlamat();
        String telepon_pemasok = pemasok.getNoTelepon();
        String person_p = pemasok.getPerson();

        String sql = "call tambahPemasok(?,?,?,?,?)";
        call = konek.prepareCall(sql);

        call.setString(1, kode_pemasok);
        call.setString(2, nama_pemasok);
        call.setString(3, alamat_pemasok);
        call.setString(4, telepon_pemasok);
        call.setString(5, person_p);

        call.executeUpdate();
    }

    public void ubahPemasok(Pemasok pemasok) throws SQLException {
        CallableStatement call = null;

        String kode_pemasok = pemasok.getKodePemasok();
        String nama_pemasok = pemasok.getNamaPemasok();
        String alamat_pemasok = pemasok.getAlamat();
        String telepon_pemasok = pemasok.getNoTelepon();
        String person_p = pemasok.getPerson();

        String sql = "call ubahPemasok(?,?,?,?,?)";
        call = konek.prepareCall(sql);

        call.setString(1, kode_pemasok);
        call.setString(2, nama_pemasok);
        call.setString(3, alamat_pemasok);
        call.setString(4, telepon_pemasok);
        call.setString(5, person_p);

        call.execute();
    }

    public void hapusPemasok(Pemasok pemasok) throws SQLException {
        CallableStatement call = null;

        String kode_pemasok = pemasok.getKodePemasok();
        String sql = "call hapusPemasok(?)";
        call = konek.prepareCall(sql);
        call.setString(1, kode_pemasok);
        call.execute();
    }

    public Pemasok cariPemasok(Pemasok pemasok) throws SQLException {
        CallableStatement cl = null;

        String sql = " call cariPemasok(?,?,?,?,?) ";
        cl = konek.prepareCall(sql);
        cl.setString(1, pemasok.getKodePemasok());
        cl.registerOutParameter(2, java.sql.Types.VARCHAR);
        cl.registerOutParameter(3, java.sql.Types.VARCHAR);
        cl.registerOutParameter(4, java.sql.Types.VARCHAR);
        cl.registerOutParameter(5, java.sql.Types.VARCHAR);

        cl.execute();
        String nama_p = cl.getString(2);
        String alamat_p = cl.getString(3);
        String telepon_p = cl.getString(4);
        String person_p = cl.getString(5);
   
        cl.execute();

        pemasok.setNamaPemasok(nama_p);
        pemasok.setAlamat(alamat_p);
        pemasok.setNoTelepon(telepon_p);
        pemasok.setPerson(person_p);
  
        return pemasok;
    }

    public List<Pemasok> getAllPemasok() throws SQLException {
        PreparedStatement prepare = null;
        ResultSet result = null;
        konek.setAutoCommit(false);

        String sql = "select kode_pemasok, nama_pemasok, alamat, telepon, person from pemasok order by kode_pemasok";
        prepare = konek.prepareStatement(sql);
        result = prepare.executeQuery();

        List<Pemasok> pemasok = new ArrayList<Pemasok>();

        while (result.next()) {
            Pemasok p = new Pemasok();
            p.setKodePemasok(result.getString("kode_pemasok"));
            p.setNamaPemasok(result.getString("nama_pemasok"));
            p.setAlamat(result.getString("alamat"));
            p.setNoTelepon(result.getString("telepon"));
            p.setPerson(result.getString("person"));
         
            pemasok.add(p);
        }
        konek.commit();
        return pemasok;
    }

    public String getNo_transaksi_beli() {
        return no_transaksi_beli;
    }

    public void setNo_transaksi_beli(String no_transaksi_beli) {
        this.no_transaksi_beli = no_transaksi_beli;
    }
}